#include"SeqList.h"
#include"Contact.h"
#include<string.h>

void LoadContact(Contact* pcon)
{
	FILE* pf = fopen("contact.txt", "rb");
	if (pf == NULL)
	{
		perror("fopen error!\n");
		return;
	}
	//循环读取文件数据
	Info info;
	while (fread(&info, sizeof(Info), 1, pf))
	{
		SLPushBack(pcon, info);
	}
	printf("历史数据导入成功！\n");
}

//通讯录的初始化
void ContactInit(Contact* pcon)//实际初始化的还是顺序表
{
	SLInit(pcon);
	LoadContact(pcon);
}

//增加、删除、修改、查找、查看通讯录
void ContactAdd(Contact* pcon)
{
	Info info;
	printf("请输入联系人的姓名：\n");
	scanf("%s", info.name);
	printf("请输入联系人的性别：\n");
	scanf("%s", info.sex);
	printf("请输入联系人的年龄：\n");
	scanf("%d", &info.age);
	printf("请输入联系人的电话：\n");
	scanf("%s", info.tel);
	printf("请输入联系人的地址：\n");
	scanf("%s", info.adder);

	SLPushBack(pcon, info);
}

int Find_Name(Contact* pcon, char name[])
{
	for (int i = 0; i < pcon->size; i++)
	{
		if (strcmp(pcon->arr[i].name, name) == 0)
		{
			return i;
		}
	}
	return -1;
}

void ContactDel(Contact* pcon)
{
	printf("请输入要删除的联系人姓名：\n");
	char name[NAME_MAX];
	scanf("%s", name);
	int findindex = Find_Name(pcon, name);
	if (findindex < 0)
	{
		printf("该联系人不存在！\n");
		return;
	}
	SLErase(pcon, findindex);
	printf("删除联系人成功\n");
}

void ContactModify(Contact* pcon)
{
	printf("请输入要修改联系人的姓名：\n");
	char name[NAME_MAX];
	scanf("%s", name);

	int findindex = Find_Name(pcon, name);
	if (findindex < 0)
	{
		printf("要修改的联系人不存在！\n");
		return;
	}

	printf("请输入要修改的联系人的姓名：\n");
	scanf("%s", pcon->arr[findindex].name);
	printf("请输入要修改的联系人的性别：\n");
	scanf("%s", pcon->arr[findindex].sex);
	printf("请输入要修改的联系人的年龄：\n");
	scanf("%d", pcon->arr[findindex].age);
	printf("请输入要修改的联系人的电话：\n");
	scanf("%s", pcon->arr[findindex].tel);
	printf("请输入要修改的联系人的地址：\n");
	scanf("%s", pcon->arr[findindex].adder);

	printf("联系人信息修改成功！\n");
}

void ContactFind(Contact* pcon)
{
	printf("请输入要查找的联系人姓名：\n");
	char name[NAME_MAX];
	scanf("%s", name);
	
	int findindex = Find_Name(pcon, name);
	if (findindex < 0)
	{
		printf("要查找的联系人不存在！\n");
		return;
	}
	printf("姓名\t性别\t年龄\t电话\t地址\n");
	printf("%s\t%s\t%d\t%s\t%s\n", \
		pcon->arr[findindex].name, \
		pcon->arr[findindex].sex, \
		pcon->arr[findindex].age, \
		pcon->arr[findindex].tel, \
		pcon->arr[findindex].adder);
}

void ContactShow(Contact* pcon)
{
	printf("姓名\t性别\t年龄\t电话\t地址\n");
	for (int i = 0; i < pcon->size; i++)
	{
		printf("%s\t%s\t%d\t%s\t%s\n", \
			pcon->arr[i].name, \
			pcon->arr[i].sex, \
			pcon->arr[i].age, \
			pcon->arr[i].tel, \
			pcon->arr[i].adder);
	}
}

void SaveContact(Contact* pcon)
{
	FILE* pf = fopen("contact.txt", "wb");
	if (pf == NULL)
	{
		perror("fopen error!\n");
		return;
	}
	//将通讯录数据写入到文件
	for (int i = 0; i < pcon->size; i++)
	{
		fwrite(pcon->arr + i, sizeof(Info), 1, pf);
	}
	printf("通讯录数据保存成功！\n");
}
//通讯录的销毁
void ContactDesTroy(Contact* pcon)
{
	SLDestroy(pcon);
	SaveContact(pcon);
}